package com.biosimilarity.parallelOgram.model.parallelOgram;
import com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.*;
/** BNFC-Generated Composition Visitor
*/

public class ComposVisitor<A> implements
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectionExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectionExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SummationExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SummationExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SummationBody.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SummationBody,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeFormals.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeFormals,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionBodyPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionBodyPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SitePtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SitePtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnPtn.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnPtn,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessDeclOrCond.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessDeclOrCond,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenerator.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenerator,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessCondition.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessCondition,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedDeclOrCond.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedDeclOrCond,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenerator.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenerator,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedCondition.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedCondition,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessProperty.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessProperty,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessShape.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessShape,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationShape.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationShape,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionBodyShape.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionBodyShape,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedShape.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedShape,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionProp.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionProp,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteProp.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteProp,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsProp.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsProp,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalProp.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalProp,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GroundProcessProperty.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GroundProcessProperty,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.LogicalGround.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.LogicalGround,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteExpr.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteExpr,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVar.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVar,A>,
  com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessVar.Visitor<com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessVar,A>
{
/* ProcessExpr */
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Mixed p, A arg)
    {
      CollectionExpr collectionexpr_ = p.collectionexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Mixed(collectionexpr_);
    }
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Selected p, A arg)
    {
      SummationExpr summationexpr_ = p.summationexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Selected(summationexpr_);
    }
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Engaged p, A arg)
    {
      ReceiveExpr receiveexpr_ = p.receiveexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Engaged(receiveexpr_);
    }
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Carried p, A arg)
    {
      SendExpr sendexpr_ = p.sendexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Carried(sendexpr_);
    }
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Served p, A arg)
    {
      SiteExpr siteexpr_ = p.siteexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Served(siteexpr_);
    }
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Varied p, A arg)
    {
      ProcessVar processvar_ = p.processvar_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Varied(processvar_);
    }
    public ProcessExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Emptied p, A arg)
    {

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Emptied();
    }

/* CollectionExpr */
    public CollectionExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectedExtension p, A arg)
    {
      ListProcessExpr listprocessexpr_ = new ListProcessExpr();
      for (ProcessExpr x : p.listprocessexpr_) {
        listprocessexpr_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectedExtension(listprocessexpr_);
    }
    public CollectionExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectedIntension p, A arg)
    {
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);
      ListProcessDeclOrCond listprocessdeclorcond_ = new ListProcessDeclOrCond();
      for (ProcessDeclOrCond x : p.listprocessdeclorcond_) {
        listprocessdeclorcond_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CollectedIntension(processptn_, listprocessdeclorcond_);
    }

/* SummationExpr */
    public SummationExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Switched p, A arg)
    {
      SummationBody summationbody_ = p.summationbody_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Switched(summationbody_);
    }

/* SummationBody */
    public SummationBody visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SwitchedExtension p, A arg)
    {
      ListReceiveExpr listreceiveexpr_ = new ListReceiveExpr();
      for (ReceiveExpr x : p.listreceiveexpr_) {
        listreceiveexpr_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SwitchedExtension(listreceiveexpr_);
    }
    public SummationBody visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SwitchedIntension p, A arg)
    {
      GuardedPtn guardedptn_ = p.guardedptn_.accept(this, arg);
      ListGuardedDeclOrCond listguardeddeclorcond_ = new ListGuardedDeclOrCond();
      for (GuardedDeclOrCond x : p.listguardeddeclorcond_) {
        listguardeddeclorcond_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SwitchedIntension(guardedptn_, listguardeddeclorcond_);
    }

/* ReceiveExpr */
    public ReceiveExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Synched p, A arg)
    {
      SiteExpr siteexpr_ = p.siteexpr_.accept(this, arg);
      AbstractionExpr abstractionexpr_ = p.abstractionexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Synched(siteexpr_, abstractionexpr_);
    }

/* SendExpr */
    public SendExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CoSynched p, A arg)
    {
      SiteExpr siteexpr_ = p.siteexpr_.accept(this, arg);
      InformationExpr informationexpr_ = p.informationexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.CoSynched(siteexpr_, informationexpr_);
    }

/* AbstractionExpr */
    public AbstractionExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Abstracted p, A arg)
    {
      ExchangeFormals exchangeformals_ = p.exchangeformals_.accept(this, arg);
      ProcessExpr processexpr_ = p.processexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Abstracted(exchangeformals_, processexpr_);
    }

/* InformationExpr */
    public InformationExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Manifested p, A arg)
    {
      ListExchangeExpr listexchangeexpr_ = new ListExchangeExpr();
      for (ExchangeExpr x : p.listexchangeexpr_) {
        listexchangeexpr_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Manifested(listexchangeexpr_);
    }

/* ExchangeFormals */
    public ExchangeFormals visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeFormalSpec p, A arg)
    {
      ListExchangeExpr listexchangeexpr_ = new ListExchangeExpr();
      for (ExchangeExpr x : p.listexchangeexpr_) {
        listexchangeexpr_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ExchangeFormalSpec(listexchangeexpr_);
    }

/* ProcessPtn */
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.MixtureDestructed p, A arg)
    {
      ListProcessPtn listprocessptn_ = new ListProcessPtn();
      for (ProcessPtn x : p.listprocessptn_) {
        listprocessptn_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.MixtureDestructed(listprocessptn_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionDestructed p, A arg)
    {
      SelectionBodyPtn selectionbodyptn_ = p.selectionbodyptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectionDestructed(selectionbodyptn_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveDestructed p, A arg)
    {
      GuardedPtn guardedptn_ = p.guardedptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveDestructed(guardedptn_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendDestructed p, A arg)
    {
      SitePtn siteptn_ = p.siteptn_.accept(this, arg);
      InformationPtn informationptn_ = p.informationptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendDestructed(siteptn_, informationptn_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ServeDestructed p, A arg)
    {
      SelectionBodyPtn selectionbodyptn_ = p.selectionbodyptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ServeDestructed(selectionbodyptn_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnLiteral p, A arg)
    {
      ProcessExpr processexpr_ = p.processexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnLiteral(processexpr_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnPVar p, A arg)
    {
      ProcessVar processvar_ = p.processvar_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnPVar(processvar_);
    }
    public ProcessPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnWild p, A arg)
    {
      String wild_ = p.wild_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessPtnWild(wild_);
    }

/* SelectionBodyPtn */
    public SelectionBodyPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectBodyDestruct p, A arg)
    {
      ListGuardedPtn listguardedptn_ = new ListGuardedPtn();
      for (GuardedPtn x : p.listguardedptn_) {
        listguardedptn_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectBodyDestruct(listguardedptn_);
    }

/* GuardedPtn */
    public GuardedPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedDestruct p, A arg)
    {
      SitePtn siteptn_ = p.siteptn_.accept(this, arg);
      AbstractionPtn abstractionptn_ = p.abstractionptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedDestruct(siteptn_, abstractionptn_);
    }

/* InformationPtn */
    public InformationPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationDestruct p, A arg)
    {
      ListProcessPtn listprocessptn_ = new ListProcessPtn();
      for (ProcessPtn x : p.listprocessptn_) {
        listprocessptn_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.InformationDestruct(listprocessptn_);
    }

/* AbstractionPtn */
    public AbstractionPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionDestruct p, A arg)
    {
      FormalsPtn formalsptn_ = p.formalsptn_.accept(this, arg);
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractionDestruct(formalsptn_, processptn_);
    }

/* SitePtn */
    public SitePtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteQuotePtn p, A arg)
    {
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteQuotePtn(processptn_);
    }
    public SitePtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVarPtn p, A arg)
    {
      SiteVar sitevar_ = p.sitevar_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVarPtn(sitevar_);
    }
    public SitePtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteWildPtn p, A arg)
    {
      String wild_ = p.wild_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteWildPtn(wild_);
    }

/* FormalsPtn */
    public FormalsPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsDestruct p, A arg)
    {
      ListPtnPtn listptnptn_ = new ListPtnPtn();
      for (PtnPtn x : p.listptnptn_) {
        listptnptn_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.FormalsDestruct(listptnptn_);
    }

/* PtnPtn */
    public PtnPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnLiteralDestruct p, A arg)
    {
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnLiteralDestruct(processptn_);
    }
    public PtnPtn visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnVarDestruct p, A arg)
    {
      String uident_ = p.uident_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.PtnVarDestruct(uident_);
    }

/* ExchangeExpr */
    public ExchangeExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Substituted p, A arg)
    {
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Substituted(processptn_);
    }
    public ExchangeExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Variable p, A arg)
    {
      SiteVar sitevar_ = p.sitevar_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Variable(sitevar_);
    }

/* ProcessDeclOrCond */
    public ProcessDeclOrCond visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessRequired p, A arg)
    {
      ProcessCondition processcondition_ = p.processcondition_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessRequired(processcondition_);
    }
    public ProcessDeclOrCond visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenerated p, A arg)
    {
      ProcessGenerator processgenerator_ = p.processgenerator_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenerated(processgenerator_);
    }

/* ProcessGenerator */
    public ProcessGenerator visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenExpr p, A arg)
    {
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);
      ProcessExpr processexpr_ = p.processexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGenExpr(processptn_, processexpr_);
    }

/* ProcessCondition */
    public ProcessCondition visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessReqExpr p, A arg)
    {
      ProcessPtn processptn_ = p.processptn_.accept(this, arg);
      ProcessProperty processproperty_ = p.processproperty_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessReqExpr(processptn_, processproperty_);
    }

/* GuardedDeclOrCond */
    public GuardedDeclOrCond visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedRequired p, A arg)
    {
      GuardedCondition guardedcondition_ = p.guardedcondition_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedRequired(guardedcondition_);
    }
    public GuardedDeclOrCond visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenerated p, A arg)
    {
      GuardedGenerator guardedgenerator_ = p.guardedgenerator_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenerated(guardedgenerator_);
    }

/* GuardedGenerator */
    public GuardedGenerator visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenExpr p, A arg)
    {
      GuardedPtn guardedptn_ = p.guardedptn_.accept(this, arg);
      ReceiveExpr receiveexpr_ = p.receiveexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedGenExpr(guardedptn_, receiveexpr_);
    }

/* GuardedCondition */
    public GuardedCondition visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedReqExpr p, A arg)
    {
      GuardedPtn guardedptn_ = p.guardedptn_.accept(this, arg);
      GuardedShape guardedshape_ = p.guardedshape_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedReqExpr(guardedptn_, guardedshape_);
    }

/* ProcessProperty */
    public ProcessProperty visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessDisjunction p, A arg)
    {
      ProcessProperty processproperty_1 = p.processproperty_1.accept(this, arg);
      ProcessProperty processproperty_2 = p.processproperty_2.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessDisjunction(processproperty_1, processproperty_2);
    }
    public ProcessProperty visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessConjunction p, A arg)
    {
      ProcessProperty processproperty_1 = p.processproperty_1.accept(this, arg);
      ProcessProperty processproperty_2 = p.processproperty_2.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessConjunction(processproperty_1, processproperty_2);
    }
    public ProcessProperty visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessNegation p, A arg)
    {
      ProcessProperty processproperty_ = p.processproperty_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessNegation(processproperty_);
    }
    public ProcessProperty visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessStructure p, A arg)
    {
      ProcessShape processshape_ = p.processshape_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessStructure(processshape_);
    }
    public ProcessProperty visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGround p, A arg)
    {
      GroundProcessProperty groundprocessproperty_ = p.groundprocessproperty_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessGround(groundprocessproperty_);
    }

/* ProcessShape */
    public ProcessShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.MixtureProp p, A arg)
    {
      ListProcessProperty listprocessproperty_ = new ListProcessProperty();
      for (ProcessProperty x : p.listprocessproperty_) {
        listprocessproperty_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.MixtureProp(listprocessproperty_);
    }
    public ProcessShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveProp p, A arg)
    {
      GuardedShape guardedshape_ = p.guardedshape_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ReceiveProp(guardedshape_);
    }
    public ProcessShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendProp p, A arg)
    {
      SiteProp siteprop_ = p.siteprop_.accept(this, arg);
      InformationShape informationshape_ = p.informationshape_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SendProp(siteprop_, informationshape_);
    }
    public ProcessShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ServeProp p, A arg)
    {
      SelectionBodyShape selectionbodyshape_ = p.selectionbodyshape_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ServeProp(selectionbodyshape_);
    }

/* InformationShape */
    public InformationShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.DataShape p, A arg)
    {
      ListProcessProperty listprocessproperty_ = new ListProcessProperty();
      for (ProcessProperty x : p.listprocessproperty_) {
        listprocessproperty_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.DataShape(listprocessproperty_);
    }

/* SelectionBodyShape */
    public SelectionBodyShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectBodyProp p, A arg)
    {
      ListGuardedShape listguardedshape_ = new ListGuardedShape();
      for (GuardedShape x : p.listguardedshape_) {
        listguardedshape_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SelectBodyProp(listguardedshape_);
    }

/* GuardedShape */
    public GuardedShape visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedProp p, A arg)
    {
      SiteProp siteprop_ = p.siteprop_.accept(this, arg);
      AbstractionProp abstractionprop_ = p.abstractionprop_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.GuardedProp(siteprop_, abstractionprop_);
    }

/* AbstractionProp */
    public AbstractionProp visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractedProp p, A arg)
    {
      FormalsProp formalsprop_ = p.formalsprop_.accept(this, arg);
      ProcessProperty processproperty_ = p.processproperty_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.AbstractedProp(formalsprop_, processproperty_);
    }

/* SiteProp */
    public SiteProp visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteShape p, A arg)
    {
      ProcessProperty processproperty_ = p.processproperty_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteShape(processproperty_);
    }

/* FormalsProp */
    public FormalsProp visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamsProp p, A arg)
    {
      ListFormalProp listformalprop_ = new ListFormalProp();
      for (FormalProp x : p.listformalprop_) {
        listformalprop_.add(x.accept(this,arg));
      }

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamsProp(listformalprop_);
    }

/* FormalProp */
    public FormalProp visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamIdentProp p, A arg)
    {
      String uident_ = p.uident_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamIdentProp(uident_);
    }
    public FormalProp visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamShapeProp p, A arg)
    {
      SiteProp siteprop_ = p.siteprop_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ParamShapeProp(siteprop_);
    }

/* GroundProcessProperty */
    public GroundProcessProperty visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessLogicGround p, A arg)
    {
      LogicalGround logicalground_ = p.logicalground_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessLogicGround(logicalground_);
    }

/* LogicalGround */
    public LogicalGround visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Verity p, A arg)
    {

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Verity();
    }
    public LogicalGround visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Absurdity p, A arg)
    {

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Absurdity();
    }
    public LogicalGround visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Nullity p, A arg)
    {

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.Nullity();
    }

/* SiteExpr */
    public SiteExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteIdent p, A arg)
    {
      String lident_ = p.lident_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteIdent(lident_);
    }
    public SiteExpr visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteQuotation p, A arg)
    {
      ProcessExpr processexpr_ = p.processexpr_.accept(this, arg);

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteQuotation(processexpr_);
    }

/* SiteVar */
    public SiteVar visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVarIdent p, A arg)
    {
      String lident_ = p.lident_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.SiteVarIdent(lident_);
    }

/* ProcessVar */
    public ProcessVar visit(com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessIdent p, A arg)
    {
      String uident_ = p.uident_;

      return new com.biosimilarity.parallelOgram.model.parallelOgram.Absyn.ProcessIdent(uident_);
    }

}